/* eslint-disable space-before-function-paren */
/* eslint-disable no-undef */
'use strict';

// 立即执行函数
((window, $) => {
  // 将来的方法都暴露在 window.ajax对象下
  if (window.ajax) {
    console.log('window.ajax已被占用！');
    return;
  }
  window.ajax = {};

  // get 请求 获取数据
  window.ajax.get = function (url, callback) {
    ajaxFn('get', url, null, callback);
  };

  // post 请求 提交数据
  window.ajax.post = function (url, params, callback) {
    if (typeof params === 'function') {
      callback = params;
      params = {};
    }
    ajaxFn('post', url, params, callback);
  };

  // 上传文件
  window.ajax.upload = function (url, file, callback) {
    // 处理文件
    const formData = new FormData();
    formData.append('file', file);
    $.ajax({
      type: 'post',
      url,
      data: formData,
      contentType: false,
      processData: false,
      success(res) {
        if (res.errno !== 0) {
          callback(res.message);
          return;
        }
        callback(null, res.data);
      },
      error(err) {
        callback(err);
      },
    });
  };

  // 对ajax做统一的处理
  function ajaxFn(type, url, params, callback) {
    // callback(err,data)
    $.ajax({
      type,
      url,
      contentType: 'application/json;charset=utf-8',
      data: params ? JSON.stringify(params) : '',
      success(res) {
        // console.log(res);
        if (res.errno !== 0) {
          // 错误 {errno: 10001, message:"xxx"}
          callback(res.message);
          return;
        }
        // 正常的数据 {errno: 0, data: {}}
        callback(null, res.data);
      },
      error(err) {
        // 错误
        callback(err.message);
      },
    });
  }
})(window, jQuery);
